S3署名バージョン2廃止で「コード変更」が必要な時の対応
はじめに
瀬田@大阪オフィスです。
Amazon S3のAWS署名バーション2の廃止に向けて対応が急務となってきました。 弊社でも関連ブログを公開しております。
今回は、「署名バーション2」を利用していることはわかったけど、「コード変更」が必要と言われた時にどういった対応をすればいいかまとめてみました。
追記
署名バーション2の廃止は延期されました。詳しくは以下の記事をご確認ください。 https://aws.amazon.com/jp/blogs/news/amazon-s3-update-sigv2-deprecation-period-extended-modified/
まずは何が署名バーション2を使っているか特定する
「署名バーション2」を何が使っているかの確認方法はこちらの記事をご確認ください。
原因
「署名バーション2を使っていると判定された理由は以下の原因が考えられます。
- デフォルトで「署名バージョン2」を利用するSDKの使用をしている。
- バージョンの新旧に関わらず、SDKで明示的に「署名バーション2」を使用するよう設定している。
- SDKで作成した署名付きURLで、「署名バーション2」を使って署名している。
- S3にダイレクトRESTコールを送信する等、AWSにHTTPリクエストを送るためのカスタムコードが「署名バーション2」で署名されている。
必要な対応
SDK、CLI、署名付きURL(SDKで作成されたもの)
- まず、対応したSDKのバージョンを確認し、バージョンアップを行ってください。 ※ここに記載されたバージョンは中々古いので、可能であればセキュリティの観点からも最新版がおすすめです。
- コード中で明示的に「署名バーション2」を設定しているか確認し、修正方法の案内ページを参考にコードを「署名バーション4」を指定するよう修正してください。
S3にダイレクトRESTコール等のAWSにHTTPリクエストを送るカスタムコードを使用している場合
署名バージョン 4 署名プロセスを参考に、コード修正を実施してください。
lambdaのboto3
config指定時にsignature_versionを指定できます。 Configuration
s3 Set S3 specific configuration data. You typically will not need to set these values. Boto3 will automatically switching signature versions and addressing styles if necessary. This is a nested configuration value. See the Nested Configuration section for more information on the format. The sub config keys supported for s3 are:
addressing_style: Specifies which addressing style to use. This controls if the bucket name is in the hostname or part of the URL. Value values are: path, virtual, and auto. signature_version: Which AWS signature version to use when signing requests. Value values are: s3 and s3v4.
s3 = boto3.resource('s3', config=Config(signature_version='s3v4'))
使用ツール類の動作も確認
使用しているS3系のツールがあれば動作確認もしておくと安心ですね。
最後に
大まかには、バージョンアップと署名バージョンの指定方法の変更で対応できそうです。 検証作業は必要となりますが、やることが明確になれば対応策は見えてくると思います!